package middleware

import (
	"fmt"
	"net/http/httputil"
)

func Print(context Context, next Next) error {
	requestDump, err := httputil.DumpRequest(context.Request(), false)
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Print(string(requestDump))
	}
	return next(nil)
}

// formatRequest generates ascii representation of a request
//func formatRequest(r *http.Request) string {
//	// Create return string
//	var request []string
//	// Add the request string
//	url := fmt.Sprintf("%v %v %v", r.Method, r.URL, r.Proto)
//	request = append(request, url)
//	// Add the host
//	request = append(request, fmt.Sprintf("Host: %v", r.Host))
//	// Loop through headers
//	for name, _ := range r.Header {
//		name = strings.ToLower(name)
//		for _, h := range r.Header[name] {
//			request = append(request, fmt.Sprintf("%v: %v", name, h))
//		}
//	}
//
//	// If this is a POST, add post data
//	if r.Method == "POST" || r.Method == "PUT" {
//		r.ParseForm()
//		request = append(request, "\n")
//		request = append(request, r.Form.Encode())
//	}
//	// Return the request as a string
//	return strings.Join(request, "\n")
//}
